#ifndef __my_svpwm_h__
#define __my_svpwm_h__
#include "math.h"
#include <stm32f10x.h>
class my_svpwm
{
    //由于最大幅度和最大斜率限制，所以可以不用非常多的数字覆盖，由于基波在10~100K，而变频位于1~1000HZ，而PWM的长度3600~360，即最大幅度个数为3600，而每次变频需要重新计算
    //而相应的高度最大是pwm最大长度，即长度为360~3600，因此可以采用事前计算后重新加值的方式
private:
    //   int sin_table_constant[3600];
    int sin_table_variable[3600];
    max_duty;
    half_max_duty;
    max_time_for_single_phase;
    phase_difference_between;
    time_base_for_every_phase[3];

public:
    void init_sin_table(void);
    void recalculate_sin_table_variable(int max_time_for_single_phase);
    void svpwm_run(void);
    //使用之后必须使用reculculate
    void change_max_duty(int max_duty);
    void set_phase_difference_180(void);
    void set_phase_difference_120(void);
};

#endif /* __my_svpwm_h__ */